package com.shb.jutils.commons;

import com.shb.jutils.exception.MyException;

public class MysqlDbUtil {

	public static String url = null;
	public static String user = null;
	public static String pass = null;
	
	public static String MYSQLDUMP_DEFAULT = "cmd /c mysqldump -c -t --skip-add-locks --hex-blob";
	
	/**
	 * 初始化Mysql信息
	 * @param url	mysql的主机地址
	 * @param user	mysql用户名
	 * @param pass	mysql密码
	 */
	public static void init(String url, String user, String pass){
		MysqlDbUtil.url = url;
		MysqlDbUtil.user = user;
		MysqlDbUtil.pass = pass;
	}
	
	/**
	 * 根据数据库信息初始化mysqldump命令 
	 * @return
	 */
	public static String initMysqlDump() throws MyException{
		if(!StringUtil.isNulorEpt(url) && !StringUtil.isNulorEpt(user) && !StringUtil.isNulorEpt(pass)){
			MYSQLDUMP_DEFAULT = MYSQLDUMP_DEFAULT + " -u" + user + " -p" + pass + " -h " + url;
		}else {
			throw new MyException("MySqlDbUtil尚未初始化!");
		}
		return MYSQLDUMP_DEFAULT;
	}
	
	/**
	 * 根据mysqldump.exe路径、数据库信息初始化mysqldump命令 
	 */
	public static String initMysqlDump(String mysqlDumpPath) throws MyException{
		if(!StringUtil.isNulorEpt(url) && !StringUtil.isNulorEpt(user) && !StringUtil.isNulorEpt(pass)){
			StringBuilder mysqldump = new StringBuilder();
			mysqldump.append("cmd /c ").append(mysqlDumpPath).append("mysqldump -c -t --skip-add-locks --hex-blob");
			mysqldump.append(" -u").append(user).append(" -p").append(pass).append(" -h ").append(url);
			MYSQLDUMP_DEFAULT = mysqldump.toString();
		}else {
			throw new MyException("MySqlDbUtil尚未初始化!");
		}
		return MYSQLDUMP_DEFAULT;
	}
	
	/**
	 * 配置mysqldump命令
	 * @param dbName	数据库名
	 * @param tblNames  表名数组
	 * @param filePath	导出路径
	 */
	public static String configMysqlDump(String dbName, String[] tblNames, String filePath){
		StringBuilder dump = new StringBuilder(MYSQLDUMP_DEFAULT);
		dump.append(" ").append(dbName);
		for(String tblName: tblNames){
			dump.append(" ").append(tblName);
		}
		dump.append(" >").append(filePath);
		return dump.toString();
	}
	
	/**
	 * 配置mysqldump命令
	 * @param dbName	数据库名
	 * @param tblName	表名
	 * @param where		过滤条件
	 * @param filePath	导出路径
	 * @return
	 */
	public static String configMysqlDump(String dbName,String tblName, String where, String filePath){
		StringBuilder dump = new StringBuilder(MYSQLDUMP_DEFAULT);
		dump.append(" ").append(dbName);
		dump.append(" ").append(tblName);
		dump.append(" -w \"").append(where).append("\"");
		dump.append(" >").append(filePath);
		return dump.toString();
	}
}
